home *** CD-ROM | disk | FTP | other *** search
Wrap
/** Global stuff for yoono toolbar @author : Xavier Grosjean Copyright 2006, Yoono SAS. **/ // Juste apres une installation, // Il faut gerer l'affichage de boutons nouveaux dans cette version: s'ils sont customizables // ils n'apparaissent pas tout seuls. Mais on ne veut pas faire apparaitre d'anciens boutons que // l'utilisateur aurait supprimé par customisation... yoonoGlob.updateInterface = function() { YOONO_LOG.debug('updateInterface'); if(yoonoGlob.firstReleaseRun) { YOONO_LOG.debug('Nouvelle version'); // Supprimer les anciennes prefs de stats if(yoonoGlob.previousRelease < '5.0.5') { YOONO_LOG.debug('Removing old stuff'); try { var OLDPREF = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.yoono.stats.data.exposition."); OLDPREF.deleteBranch(""); OLDPREF = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.yoono.stats.data.expo"); OLDPREF.deleteBranch(""); YNPREFBRANCH.clearUserPref('stats.data.running'); YNPREFBRANCH.clearUserPref('stats.data.run'); } catch(e) { } } var numVersion = yoonoGlob.currentRelease.split('.'); numVersion.splice(3, 1); numVersion = numVersion.join('.'); var url = ''; // If it's an install, display the install page for the release. if(yoonoGlob.firstRun) { url = 'http://www.yoono.com/releases/ff/' + numVersion + '/postinstall_new.html'; setTimeout(yoonoGlob.openUrlInNewTab, 1000, url, null); } else { // If it's an update, display the update page for the release. url = 'http://www.yoono.com/releases/ff/' + numVersion + '/postinstall_update.html'; setTimeout(yoonoGlob.openUrlInNewTab, 1000, url, null); } YNPREFBRANCH.setCharPref("release", yoonoGlob.currentRelease); } // Au premier lancement de la 5.0.0, il faut installer le bouton Yoono de toggle des sidebar et toolbar if(yoonoGlob.firstRun || (yoonoGlob.previousRelease < '5.0.4')) { YOONO_LOG.debug('Premier lancement de la version 5 avec nouveau bouton toggle'); yoonoGlob.installYoonoButton(); } } yoonoGlob.installYoonoButton = function() { var palette = document.getElementById('navigator-toolbox').palette; // On ne trouve pas les boutons par getElementById tant qu'ils sont dans la palette // Mais méfiance, s'il y a eu un jour le bouton, il reste ds les caches d'extension... var yoonoToggleButton = document.getElementById('yoono-toggle-sb'); if(!yoonoToggleButton) { yoonoToggleButton = palette.getElementsByAttribute('id', 'yoono-toggle-sb')[0]; } var insertBeforeElt = document.getElementById('urlbar-container'); if(!insertBeforeElt) { insertBeforeElt = document.getElementById('search-container'); } if(!insertBeforeElt) { insertBeforeElt = document.getElementById('throbber-box'); } if(insertBeforeElt) { insertBeforeElt.parentNode.insertBefore(yoonoToggleButton, insertBeforeElt); yoonoGlob.persistToolbarSet(insertBeforeElt.parentNode); } } // Mettre a jour et persister le currentset d'une toolbar yoonoGlob.persistToolbarSet = function(tb) { try { var id = tb.getAttribute('id'); YOONO_LOG.debug('Persisting toolbar buttons for ' + id); // Il faut parcourir la toolbar var newset = ''; var eltId = ''; for(var offTb=0 ; offTb < tb.childNodes.length; offTb++) { if(tb.childNodes[offTb].nodeName != 'toolbarspring') { eltId = tb.childNodes[offTb].getAttribute('id'); } else { eltId = 'spring'; } newset += eltId + ','; } newset = newset.replace(/,$/,''); YOONO_LOG.debug('newset '+ newset); tb.setAttribute('currentset', newset); document.persist(id, 'currentset'); } catch(e) { YOONO_LOG.exception(e); } } // called from wizard ? var infoLayer; var YServices; yoonoGlob.onSidebarClose = function() { if (YNPREFBRANCH.getBoolPref("warnedOnClose")) return; var scriptLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader); scriptLoader.loadSubScript("chrome://yoonosb/content/js/services/alerts/Layer.js"); // Hack : used by Layer for errors ... YServices = YOONO_CMPT.getYServices(); if (infoLayer) infoLayer.close(); infoLayer = new Layer(); infoLayer.setOpacityEffet(true); infoLayer.resize(420,140); infoLayer.move("relative-bottom",177,-7,document.getElementById("yoono-toggle-sb")); var css=[]; css.push('#main-box {position:absolute;left:0;top:0;width:420px;height:140px;}'); css.push('#border-box {font-family:Arial;font-size: 12px; position:absolute;top:8px;bottom:0;right:0;left:0; padding:15px; border: 2px solid black; background:white; -moz-border-radius: 5px;}'); css.push('#icon {float:left;margin-left:5px;width:38px;height:56px;background-image:url(chrome://yoono/skin/close-popup/i_icon.png);}'); css.push('#margin-box {margin-left: 60px;margin-right: 30px;}'); css.push('#checkbox {cursor: pointer;float: left;margin-top:2px;border: 1px solid #c0c0c0;-moz-border-radius: 3px; width: 10px; height: 10px;}'); css.push('#checkbox-text {cursor: pointer;margin-left: 18px;color: #999999;}'); css.push('#button-ok { padding: 3px; cursor: pointer; -moz-border-radius: 5px; color: white; background-image: url(chrome://yoono/skin/close-popup/button_bg.png); position: absolute; bottom: 10px; right: 30px; text-align: center; width: 40px;}'); css.push('#top-arrow {position:absolute;top:0;left:20px; width:21px; height: 10px; background-image: url(chrome://yoono/skin/close-popup/up_arrow.png);}'); if (navigator.platform.indexOf('Mac')==0) { css.push('#border-box{-moz-border-radius:0;top:0;} #top-arrow{display:none;}'); } infoLayer.setStyleText(css.join('')); var html=[]; html.push('<div id="main-box">'); html.push(' <div id="border-box">'); html.push(' <div id="button-ok">OK</div>'); html.push(' <div id="icon"></div>'); html.push(' <div id="margin-box">'); html.push(' <strong>Closing Yoono disconnects you from your services so you won\'t see any pop up notifications or IMs.</strong><br />'); html.push(' You can relaunch Yoono by clicking on the Yoono icon in your browser toolbar.<br/><br/>'); html.push(' <div id="checkbox-line" style="clear:both">'); html.push(' <div id="checkbox"></div><div id="checkbox-text">Don\'t show this message again</div>'); html.push(' </div>'); html.push(' </div>'); html.push(' </div>'); html.push(' <div id="top-arrow"></div>'); html.push('</div>'); infoLayer.setContent(html.join('')); infoLayer.show(function () { var btn = infoLayer.getElementById('button-ok'); btn.addEventListener("click", function () { infoLayer.close(); infoLayer=null; },false); var checkbox = infoLayer.getElementById('checkbox-line'); checkbox.addEventListener("click", function () { YNPREFBRANCH.setBoolPref("warnedOnClose",true); infoLayer.close(); infoLayer=null; },false); }); } yoonoGlob.toggleSb = function(evt) { if(!evt || ('yoono-toggle-sb' == evt.target.id)) { try { // returns new hidden flag (true if now hidden => closed) var result = yoonoGlob.sidebar.toggle(); if(result) { YOONO_CMPT.addStat(['clic', 'closesidebar', 'yoonobutton']); yoonoGlob.onSidebarClose(); } else { YOONO_CMPT.addStat(['clic', 'opensidebar', 'yoonobutton']) } } catch(e) { alert(e); YOONO_LOG.exception(e); var container = document.getElementById('yoono-sidebar-box'); var splitter = document.getElementById('yoono-splitter'); var hidden = container.getAttribute('hidden') || false ; if(hidden) { container.removeAttribute('hidden'); splitter.removeAttribute('hidden'); } else { container.setAttribute('hidden', "true"); splitter.setAttribute('hidden', "true"); } } } } // Called from Yoono button menu, open the sidebar and the Share feature yoonoGlob.openShare = function() { if(this.sidebar) { var delay = 10; if(!this.sidebar.isVisible()) { this.sidebar.show(); delay = 200; } setTimeout(function() { yoonoGlob.sidebar.sidebarMethods.methods.share(null); }, delay); } } // Called from Yoono button menu, to open a yoodget yoonoGlob.openYoodget = function(aYuid) { if(this.sidebar) { var delay = 10; if(!this.sidebar.isVisible()) { this.sidebar.show(); delay = 200; } function tryOpeningYoodget() { cptr --; done = yoonoGlob.sidebar.sidebarMethods.methods.callYoodget(aYuid, -1, 'highlightYoodget'); if(!done && cptr) { setTimeout(tryOpeningYoodget, delay); } } var done = false; var cptr = 20; setTimeout(tryOpeningYoodget, delay); } }